package persistentie;

import java.util.ArrayList;
import javax.swing.JOptionPane;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import domein.Klant;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class KlantenMapper {

	private final static String LEES_KLANTEN_SQL = "SELECT tblKlanten.* FROM tblKlanten;";

//Klant ophalen
	public List<Klant> geefKlanten() {
		List<Klant> klantenLijst = new ArrayList<Klant>();

		// create Statement for querying database
		Statement statement;
		Connection connection = PersistentieController.getInstance()
				.getConnection();
		try {
			statement = connection.createStatement();

			// query database
			ResultSet resultSet = statement.executeQuery(LEES_KLANTEN_SQL);

			while (resultSet.next()) {
				int id = resultSet.getInt("Klant_id");
				int aanspreekvorm = resultSet.getInt("Klant_aanspreekvorm_id");
				String naam = resultSet.getString("Klant_naam");
				String voornaam = resultSet.getString("Klant_voornaam");
				String bedrijf = resultSet.getString("Klant_bedrijf");
				String ondernemingsnummer = resultSet
						.getString("Klant_ondernemingsnummer");
				String straat = resultSet.getString("Klant_straat");
				String nummer = resultSet.getString("Klant_nummer");
				String postcode = resultSet.getString("Klant_postcode");
				String gemeente = resultSet.getString("Klant_gemeente");
				String land = resultSet.getString("Klant_land");
				String telefoon = resultSet.getString("Klant_telefoon");
				String fax = resultSet.getString("Klant_fax");
				String mobiel = resultSet.getString("Klant_mobiel");
				String email = resultSet.getString("Klant_email");
				String rekeningnummer = resultSet
						.getString("Klant_rekeningnummer");
				String iban = resultSet.getString("Klant_iban");
				String bic = resultSet.getString("Klant_bic");
				String taalcode = resultSet.getString("Klant_taalcode");
				String notities = resultSet.getString("Klant_notities");

				System.out.println("Klant met ID:" + id + " opgehaald.");

				Klant klant = new Klant(id, aanspreekvorm, naam, voornaam,
						bedrijf, ondernemingsnummer, straat, nummer, postcode,
						gemeente, land, telefoon, fax, mobiel, email,
						rekeningnummer, iban, bic, taalcode, notities);
				klantenLijst.add(klant);
			}
			statement.close();
			return klantenLijst;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
//Aanpassen Klant - WIP
	private PreparedStatement initWijzigKlant(Connection connection) {
		try {
			PreparedStatement pStatement = connection
					.prepareStatement(UPDATE_SQL);  //HERSCHRIJVEN
			return pStatement;
		}
		// detect problems interacting with the database
		catch (SQLException sqlException) {
			JOptionPane.showMessageDialog(null, sqlException.getMessage(),
					"Database Error", JOptionPane.ERROR_MESSAGE);
			System.exit(1);
		}
		return null;
	}

	public void wijzigKlant(Klant klant) {
		Connection connection = PersistentieController.getInstance()
				.getConnection();
		PreparedStatement pStatement = initWijzigKlant(connection);

		try {
			pStatement.setString(3, klant.getNaam());
			pStatement.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
}